summaryrefslogtreecommitdiffhomepage
path: root/packages/console/app/src/routes/download/[platform].ts
diff options
context:
space:
mode:
authorBrendan Allan <[email protected]>2025-12-18 01:59:23 +0800
committerGitHub <[email protected]>2025-12-18 01:59:23 +0800
commit2a3a8a1ec2d71ae27730226cfac37830c7a5dfd7 (patch)
tree79728cd1d3ae8cf926df9fd7bae1326a8a1b6112 /packages/console/app/src/routes/download/[platform].ts
parent69e562125d26b246f0374fad2de7d0d34092100c (diff)
downloadopencode-2a3a8a1ec2d71ae27730226cfac37830c7a5dfd7.tar.gz
opencode-2a3a8a1ec2d71ae27730226cfac37830c7a5dfd7.zip
console: use download proxy to rename mac and windows installers (#5697)
Co-authored-by: GitHub Action <[email protected]>
Diffstat (limited to 'packages/console/app/src/routes/download/[platform].ts')
-rw-r--r--packages/console/app/src/routes/download/[platform].ts21
1 files changed, 19 insertions, 2 deletions
diff --git a/packages/console/app/src/routes/download/[platform].ts b/packages/console/app/src/routes/download/[platform].ts
index 94e3957c6..486b6bf6c 100644
--- a/packages/console/app/src/routes/download/[platform].ts
+++ b/packages/console/app/src/routes/download/[platform].ts
@@ -1,20 +1,37 @@
import { APIEvent } from "@solidjs/start"
+import { DownloadPlatform } from "./types"
const assetNames: Record<string, string> = {
"darwin-aarch64-dmg": "opencode-desktop-darwin-aarch64.dmg",
+ "darwin-x64-dmg": "opencode-desktop-darwin-x64.dmg",
"windows-x64-nsis": "opencode-desktop-windows-x64.exe",
"linux-x64-deb": "opencode-desktop-linux-amd64.deb",
"linux-x64-rpm": "opencode-desktop-linux-x86_64.rpm",
-}
+} satisfies Record<DownloadPlatform, string>
+
+// Doing this on the server lets us preserve the original name for platforms we don't care to rename for
+const downloadNames: Record<string, string> = {
+ "darwin-aarch64-dmg": "OpenCode Desktop.dmg",
+ "darwin-x64-dmg": "OpenCode Desktop.dmg",
+ "windows-x64-nsis": "OpenCode Desktop Installer.exe",
+} satisfies { [K in DownloadPlatform]?: string }
export async function GET({ params: { platform } }: APIEvent) {
const assetName = assetNames[platform]
if (!assetName) return new Response("Not Found", { status: 404 })
- return await fetch(`https://github.com/sst/opencode/releases/latest/download/${assetName}`, {
+ const resp = await fetch(`https://github.com/sst/opencode/releases/latest/download/${assetName}`, {
cf: {
+ // in case gh releases has rate limits
cacheTtl: 60 * 60 * 24,
cacheEverything: true,
},
} as any)
+
+ const downloadName = downloadNames[platform]
+
+ const headers = new Headers(resp.headers)
+ if (downloadName) headers.set("content-disposition", `attachment; filename="${downloadName}"`)
+
+ return new Response(resp.body, { ...resp, headers })
}